import torch.nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from torchvision.datasets import CIFAR10
from torchvision.transforms import ToTensor

dataset = CIFAR10(root="datasets", train=False, transform=ToTensor(), download=True)
dataloader = DataLoader(dataset=dataset, batch_size=64, drop_last=False)

class AModule(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.model = Sequential(
            Conv2d(3, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10)
        )

    def forward(self, input):
        return self.model(input)

module = AModule()
print(module)
input = torch.ones((64, 3, 32, 32))
output = module(input)
print(input.shape)
print(output.shape)

writer = SummaryWriter("logs")
writer.add_graph(module, input)

print("success")
writer.close()